//要先安装SOAP，运行命令 npm install soap
const soap = require('soap');

// Web服务的URL
const url = 'http://szlzhkj.x3322.net:21211/wsdl/IFMCommonAPI';

// 创建SOAP请求的参数
const args = {
    UserCode_: '123',
    UserPassword_: '1234',
    StartDate_: '2025-01-01',
    EndDate_: '2025-04-23',
    Company_: '',
    Sales_: '',
    Trader_: '',
    MinNo_: '',
    No_:''
};

// 调用Web服务的方法
soap.createClient(url, function(err, client) {
    if (err) {
        console.error('创建SOAP客户端时出错:', err);
        return;
    }

    // 指定要调用的方法和参数
    client.GetCompanyProfit(args, function(err, result) {
        if (err) {
            console.error('调用Web服务时出错:', err);
            return;
        }

        try {
            // 从结果中提取JSON字符串并解析
            const jsonString = result && result.return && result.return.$value;
            
            if (jsonString) {
                // 解析JSON字符串为对象数组
                const profitData = JSON.parse(jsonString);
                
                // 确保所有字段都被正确处理
                const processedData = profitData.map(item => {
                    return {
                        code: item.营业点代码,
                        name: item.营业点名称,
                        sales_amount: item.销售金额,
                        sales_ratio: item.销售比例,
                        cost: item.成本,
                        cost_ratio: item.成本比例,
                        profit: item.利润,
                        profit_ratio: item.利润比例,
                        expenses: item.费用, // 费用
                        other_income: item.其他收入, // 其他收入
                        net_profit: item.纯利, // 纯利
                        allocation_pl: item.调拨损益,
                        conversion_pl: item.转换损益,
                        output_tax: item.销项税额,
                        input_tax: item.进项税额,
                        discount_payable: item.应付折扣
                    };
                });
                
                console.log('解析后的公司利润数据:', processedData);
                
                // 调用入库函数
                saveToDatabase(processedData);
            } else {
                console.error('未从响应中获取到有效的JSON数据');
            }
        } catch (parseError) {
            console.error('解析返回的JSON数据时出错:', parseError);
            console.log('原始返回数据:', result);
        }
    });
});

// 数据库保存函数
function saveToDatabase(data) {
    console.log(`准备将 ${data.length} 条公司利润记录保存到数据库`);
    
    // 检查是否所有记录都包含关键字段
    data.forEach((record, index) => {
        if (record.expenses === undefined || record.other_income === undefined || record.net_profit === undefined) {
            console.warn(`警告: 记录 #${index + 1} (${record.code}) 缺少关键字段`);
        }
    });
    
    // 在这里添加实际的数据库操作代码
    // 例如使用MySQL:
    /*
    const mysql = require('mysql');
    const connection = mysql.createConnection({
        host: 'localhost',
        user: 'username',
        password: 'password',
        database: 'your_database'
    });
    
    connection.connect();
    
    data.forEach(record => {
        const query = `INSERT INTO company_profit 
                      (code, name, sales_amount, sales_ratio, cost, cost_ratio, 
                       profit, profit_ratio, expenses, other_income, net_profit, 
                       allocation_pl, conversion_pl, output_tax, input_tax, discount_payable) 
                      VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
        
        const values = [
            record.code, record.name, record.sales_amount, record.sales_ratio,
            record.cost, record.cost_ratio, record.profit, record.profit_ratio,
            record.expenses, record.other_income, record.net_profit,
            record.allocation_pl, record.conversion_pl, record.output_tax,
            record.input_tax, record.discount_payable
        ];
        
        connection.query(query, values, (error, results) => {
            if (error) throw error;
            console.log(`记录已保存: ${record.code}`);
        });
    });
    
    connection.end();
    */
    
    console.log('数据已准备好入库，请实现实际的数据库连接逻辑');
}
